/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package isd.general.auditoria;

import isd.empresa.web.EmpresaMB;
import isd.general.modelo.GR_Auditoria;
import isd.general.util.JsfUtil;
import isd.seguridad.web.UsuarioSession;
import java.util.Date;
import javax.ejb.Stateless;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;

/**
 *
 * @author Claudio
 */

@Stateless
public class AuditoriaListener {
    
    @PrePersist
    public void onPrePersist(Object o) {
        if (o instanceof IAuditableEntity) {

//            System.err.println("onPrePersist");

            IAuditableEntity e = (IAuditableEntity) o;
            if (e.getAuditoria() == null) {
                e.setAuditoria(new GR_Auditoria());
            }


            e.getAuditoria().setFechaAlta(new Date());
            e.getAuditoria().setFechaModificacion(new Date());
            e.getAuditoria().setUltimaOperacion("A");
            e.getAuditoria().setDebaja("N");
            e.getAuditoria().setDiayhora(new Date());

            UsuarioSession us = (UsuarioSession) JsfUtil.getManagedBean("usuarioSession");
            e.getAuditoria().setUsuario(us.getUsuario().getUsuario());

            EmpresaMB eb = (EmpresaMB) JsfUtil.getManagedBean("empresaMB");
            e.getAuditoria().setCodigoEmpresa(eb.getEmpresa().getCodigo());
        }

    }

    @PreUpdate
    public void onPreUpdate(Object o) {

//        System.err.println("onPreUpdate");

        IAuditableEntity e = (IAuditableEntity) o;
        if (e.getAuditoria() == null) {
              e.setAuditoria(new GR_Auditoria());
        }

        e.getAuditoria().setFechaModificacion(new Date());
        e.getAuditoria().setUltimaOperacion("M");
        e.getAuditoria().setDiayhora(new Date());

        UsuarioSession us = (UsuarioSession) JsfUtil.getManagedBean("usuarioSession");
        e.getAuditoria().setUsuario(us.getUsuario().getUsuario());

        EmpresaMB eb = (EmpresaMB) JsfUtil.getManagedBean("empresaMB");
        e.getAuditoria().setCodigoEmpresa(eb.getEmpresa().getCodigo());        
        
    }

    

    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
 
}
